package com.py.framework.dao;

import com.py.framework.entity.MenuEntity;
import com.py.framework.entity.RoleEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 菜单资源Dao
 *
 * @author Leegern
 * @date 2018年4月23日
 */
public interface IntegrationMenuResourceDao {

    /**
     * 分页查询菜单资源列表信息
     *
     * @param params
     * @return
     */
    List<MenuEntity> queryMenuResourceForPage(Map<String, Object> params);

    /**
     * 根据父Id查询所有子节点数据
     *
     * @param parentId 父Id
     * @return
     */
    List<MenuEntity> getMenuResourceByParentId(@Param("parentId") String parentId);

    /**
     * 根据菜单类型查询菜单资源数据
     *
     * @param menuType 菜单类型，1：子系统，2：模块，3：功能，4：资源
     * @return
     */
    List<MenuEntity> getMenuResourceByMenuType(@Param("menuType") int menuType);

    /**
     * 根据Id查询菜单资源实体
     *
     * @param id 菜单资源Id
     * @return
     */
    MenuEntity findOneMenuResource(@Param("id") long id);

    /**
     * 根据LINK_URL查询MENU_NAME
     *
     * @param linkUrl 短连接
     * @return
     */
    MenuEntity getMenuNameByLinkURL(@Param("linkUrl") String linkUrl);

    /**
     * 添加菜单资源实体
     *
     * @param entity
     * @return
     */
    int addMenuResourceInfo(MenuEntity entity);

    /**
     * 更新菜单资源信息
     *
     * @param entity
     * @return
     */
    int updateMenuResource(MenuEntity entity);

    /**
     * 批量删除菜单资源
     *
     * @param params 菜单资源Id集合
     * @return
     */
    int batchDelMenuResource(Map<String, Object> params);

    /**
     * 获取用户菜单资源数据
     *
     * @param roleId 角色Id
     * @return
     */
    List<MenuEntity> getUserMenuResources(@Param("roleId") long roleId);

    /**
     * 获取用户角色id
     * @param userId 用户id
     * @return
     */
    long selectUserRoleId(@Param("userId") long userId);

    /**
     * 获取角色菜单关联数据
     * @param roleId 角色Id
     * @return
     */
    List<RoleEntity> getIntegrationMenuRelate(@Param("roleId") long roleId);

    /**
     * 添加角色菜单关联数据集合
     * @param datas 数据集合
     * @return
     */
    int addRegionMenuRelate(List<RoleEntity> datas);

    /**
     * 删除角色菜单信息
     * @return
     */
    int delRegionMenuRelate(Map<String, Object> params);
    
    int isResourceInfo(@Param("roleId") long roleId,
    		@Param("url") String url);
}